#include<stdio.h>
#include<string.h>
#include<unistd.h>



// 彻底理解缓冲区 ， fflash的立即刷新 , 行缓冲（显示器），重定向文件的全缓冲

// 注意C语言有自己语言级的缓存区，调用fwrite会先写入缓冲区
int main()
{ 

  // 这种的文件就是默认全刷新的文件
  FILE * fp = fopen("TextBuffer.txt","w");

  int fd = fp->_fileno; 

  dup2(fd , 1);

  printf("写入C语言级的缓冲区\n");  
  const char * msg = "Text重定向全缓冲\n";
  fwrite(msg , 1  , strlen(msg)  , fp);

  write(1,msg,strlen(msg));

  //
  fork(); //如果这里调用fork再重定向，那么 stdout行刷新的策略变为 全刷新，在第一次 子进程或父进程退出刷新的时候，为了不影响另一个进程，发生写实拷贝，就有了两份数据
  //
  return 0;
}
